//实现一个算法，确定一个字符串 s 的所有字符是否全都不同。 
//
// 示例 1： 
//
// 
//输入: s = "leetcode"
//输出: false 
// 
//
// 示例 2： 
//
// 
//输入: s = "abc"
//输出: true
// 
//
// 限制： 
//
// 
// 0 <= len(s) <= 100 
// s[i]仅包含小写字母 
// 如果你不使用额外的数据结构，会很加分。 
// 
//
// Related Topics 位运算 哈希表 字符串 排序 👍 251 👎 0

package leetcode.editor.cn;
//leetcode submit region begin(Prohibit modification and deletion)
class SolutionMian01 {
    public boolean isUnique1(String astr) {
        int[] arr = new int[26];
        for (char c : astr.toCharArray()) {
            if(arr[c - 'a'] > 0) {
                return false;
            }
            arr[c - 'a']++;
        }
        return true;
    }

    public boolean isUnique(String astr) {
        int mark = 0;
        int a = 1;
        for (char c : astr.toCharArray()) {
            int offset = c - 'a';
            if((mark & (a << offset)) != 0){
                return false;
            }
            mark |= a << offset;
        }
        return true;
    }

//    public static void main(String[] args) {
//        boolean abca = new Solution().isUnique("abcza");
//    }
}
//leetcode submit region end(Prohibit modification and deletion)
